<?php

namespace App\Kits\Validator\Rules;


use Illuminate\Validation\Validator;

/**
 * 大于等于某字段（参照字段不存在时默认通过）
 * Class GteWithRule
 * @package App\Kits\Validator\Rules
 */
class GteWithRule implements RuleInterface
{
    const NAME = 'gte_with';


    /**
     * @param $attribute
     * @param $value
     * @param $parameters
     * @param Validator $validator
     * @return bool
     */
    public function passes($attribute, $value, $parameters, Validator $validator): bool
    {
        $data = $validator->getData();
        if (!isset($data[$parameters[0]])) {
            return true;
        }
        return bccomp($value, $data[$parameters[0]], 2) >= 0;
    }

    /**
     *
     * @param $message
     * @param $attribute
     * @param $rule
     * @param $parameters
     * @param Validator $validator
     * @return string
     */
    public function message($message, $attribute, $rule, $parameters, Validator $validator): string
    {
        $data = $validator->getData();
        $value = $data[$parameters[0]];
        return str_replace(':field', $value, $message);
    }
}
